package fr.ginvest.entity;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name = "investisseur_groupe", uniqueConstraints={ @UniqueConstraint (columnNames={"nomGroupe"})})
@DiscriminatorValue("G")
public class GroupeInvestisseur extends Investisseur implements Serializable {
	
	private static final long serialVersionUID = -1531622574200639275L;
	
	@Basic(optional=false)
	private String nomGroupe;
	
	@ManyToMany(fetch=FetchType.EAGER)
	@JoinTable(name="investisseur_investisseur_groupe",uniqueConstraints={ @UniqueConstraint (columnNames={"investisseur_id","groupe_id"})},
			inverseJoinColumns={@JoinColumn(name="investisseur_id",referencedColumnName="id")},
			joinColumns={@JoinColumn(name="groupe_id",referencedColumnName="id")})
	private Set<Investisseur> investisseurs = new HashSet<Investisseur>();
	
	public GroupeInvestisseur() {}
	
	public GroupeInvestisseur(String login, String motDePasse, int fondPropre,
			String nomGroupe, Set<Investisseur> investisseurs) {
		super(login, nomGroupe, motDePasse, fondPropre);
		this.nomGroupe = nomGroupe;
		this.investisseurs = investisseurs;
	}

	public String getNomGroupe() {
		return nomGroupe;
	}

	public void setNomGroupe(String nomGroupe) {
		this.nomGroupe = nomGroupe;
	}
	
	public Set<Investisseur> getInvestisseurs() {
		return investisseurs;
	}

	public void setInvestisseurs(Set<Investisseur> investisseurs) {
		this.investisseurs = investisseurs;
	}
	
	public void addInvestisseur(Investisseur investisseur) {
		this.investisseurs.add(investisseur);
	}

}
